package com.falcon.authority.domain.req;

import com.falcon.core.domain.AbsPageQuery;
import com.falcon.authority.domain.po.MenuPO.Fields;
import com.falcon.core.domain.BasePO;
import com.swan.mybatis.condition.Condition;
import com.swan.mybatis.condition.OpType;
import lombok.Data;
import lombok.experimental.Accessors;

import java.util.Date;


/** 菜单权限表
* @author zongf
* @since 2024-03-20
*/
@Data
@Accessors(chain = true)
public class MenuQuery extends AbsPageQuery {

    /** 菜单ID */
    private Long id;

    /** 创建者 */
    private String creator;

    /** 创建时间 */
    private Date createTime;

    /** 更新时间 */
    private Date updateTime;

    /** 更新者 */
    private String updater;

    /** 父菜单ID */
    private Long parentId;

    /** 菜单名称:全 局唯一 */
    private String menuName;

    /** 展示名称 */
    private String showName;

    /** 显示顺序 */
    private Integer orderNum;

    /** 路由地址 */
    private String routePath;

    /** 组件路径 */
    private String cmpPath;

    /** 路由参数 */
    private String routeParams;

    /** 是否外链: 0-否 1-是 */
    private Integer frame;

    /** 菜单类型: 0-目录 1-菜单 2-按钮 */
    private Integer menuType;

    /** 菜单状态: 0-隐藏 2-显示 */
    private Integer visible;

    /** 菜单状态: 0-停用 1-启用 */
    private Integer status;

    /** 打开方式: 0-标签页 1-新窗口 */
    private Integer openType;

    /** 权限标识 */
    private String perms;

    /** 菜单图标 */
    private String icon;

    /** 备注 */
    private String remark;

    @Override
    public Condition toCondition() {
        Condition condition = Condition.newInstance();

        condition.and(BasePO.Fields.id, OpType.equals, this.id);
        condition.and(Fields.showName, OpType.like, this.showName);
        condition.and(Fields.status, OpType.equals, this.status);
        condition.and(Fields.menuType, OpType.equals, this.menuType);

        return condition;
    }

}
